package cn.kgm.makeGodV2;

/**
 * @Version 1.8
 * @Author: Kappi
 * @Date: 2025-9-26 11:19
 * @Description: cn.kgm.makeGodV2.IEvaluationContext
 */

import java.util.Set;

/**
 * 评估上下文接口 - 提供条件评估所需的数据访问
 */
public interface IEvaluationContext {

    /**
     * 根据属性路径获取值
     *
     * @param propertyPath 属性路径，如 "player.realm.level" 或 "world.weather"
     * @return 属性值，如果不存在返回null
     */
    Object getValue(String propertyPath);

    /**
     * 根据属性路径获取指定类型的值
     *
     * @param propertyPath 属性路径
     * @param clazz        期望的类型
     * @return 类型转换后的值，如果转换失败返回null
     */
    <T> T getValue(String propertyPath, Class<T> clazz);

    /**
     * 检查属性路径是否存在
     *
     * @param propertyPath 属性路径
     * @return 是否存在
     */
    boolean containsProperty(String propertyPath);

    /**
     * 获取所有可用的属性路径
     *
     * @return 属性路径集合
     */
    Set<String> getAvailableProperties();

    /**
     * 获取上下文的作用域（玩家、世界、战斗等）
     */
    String getScope();

    /**
     * 获取上下文创建时间戳
     */
    long getTimestamp();
}
